package gobelinmaker.server;

import com.pi4j.io.gpio.GpioController;
import com.pi4j.io.gpio.GpioFactory;
import com.pi4j.io.gpio.GpioPinDigitalOutput;
import com.pi4j.io.gpio.Pin;
import com.pi4j.io.gpio.PinPullResistance;
import com.pi4j.io.gpio.PinState;

/**
 * Világítás vezérlője.
 *
 * @author imruf84
 */
public class LightControl {

    /**
     * Tüske.
     */
    private GpioPinDigitalOutput light = null;
    /**
     * Fényforrás állapota.
     */
    private boolean on = false;

    /**
     * Konstruktor.
     *
     * @param pin tüske
     */
    public LightControl(Pin pin) {

        if (null != pin) {
            final GpioController gpio = GpioFactory.getInstance();
            this.light = gpio.provisionDigitalOutputPin(pin, PinState.LOW);
            this.light.setShutdownOptions(true, PinState.LOW, PinPullResistance.OFF);
        }

    }

    /**
     * Bekapcsolás.
     */
    public void turnOn() {

        this.on = true;

        // Ha van fizikai fényforrásunk, akkor beállítjuk.
        if (null != this.light) {
            this.light.high();
        }
    }

    /**
     * Kikapcsolás.
     */
    public void turnOff() {

        this.on = false;

        // Ha van fizikai fényforrásunk, akkor beállítjuk.
        if (null != this.light) {
            this.light.low();
        }
    }

    /**
     * Fényforrás állapotának a lekérdezése.
     *
     * @return aktív fényforrás esetén igaz, egyébként hamis
     */
    public boolean isOn() {
        return this.on;
    }
}
